<?php
/**
 * Модель Авторизации пользователя
 * Может авторизовать по двум ключам, например логин-пароль или OAuth ключи
 */
class UserAuthModel extends AbstractModel{
  protected $tableName = 'user_auth';

  protected $primaryKey = array(
    'user_id',
    'auth_type',
  );

  public  $columnTypes = array(
    'user_id'=>'uuid',
  );

  public  $data = array(
    'user_id'=>'',
    'key1'=>'',
    'key2'=>'',
    'auth_type'=>'email',
  );


	static public function getByUserID($id){
		$db = DBFacade::getConnection();
		$sql='
			SELECT * FROM user_auth WHERE user_id = ?
		';
    $dbh = $db->prepare($sql);
		$dbh->execute(array($id));
    $line = $dbh->fetch();
		if (!empty($line)) return new UserAuthModel($line);
		else return false;
	}

  /**
   * Достать запись запись авторизации по ключам и типу.
   * @param String $key1
   * @param String $key2
   * @param String $type ('email', 'facebook', 'twitter' ...)
   * @return UserAuthModel
   */
	static public function getBykeys($key1, $key2, $type){
		$db = DBFacade::getConnection();
		$sql='
			SELECT * FROM user_auth WHERE key1 = ? and key2 = ? and auth_type = ?
		';
    $dbh = $db->prepare($sql);
		$dbh->execute(array($key1, $key2, $type));
    $line = $dbh->fetch();
		if (!empty($line)) return new UserAuthModel($line);
		else return false;
	}
}


